/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package service;

import conexion.Conexion;
import controladores.ControladorGenerico;
import controladores.SesionJpaController;
import controladores.UsuarioJpaController;
import entidades.Usuario;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

/**
 *
 * @author fcarou
 */
@Path ("usuarios")
public class RestUsuarios
{
    @GET
    @Path ("todos")
    @Produces (MediaType.APPLICATION_JSON)
    public List<Usuario> getUsuarios ()
    {
        ControladorGenerico con = new ControladorGenerico(Conexion.getConexion().getEntityManager());
        return con.buscarTodos(Usuario.class);
    }
    
    @GET
    @Path ("porNombre")
    @Produces (MediaType.APPLICATION_JSON)
    public List<Usuario> getUsuarios (@QueryParam ("nombre") String nombre)
    {
        UsuarioJpaController con = new UsuarioJpaController(Conexion.getConexion().getEntityManager());
        return con.buscarUsuarios(nombre);
    }
    
    @POST
    @Path ("create")
    @Consumes(MediaType.APPLICATION_JSON)
    public boolean create (Usuario usuario, @HeaderParam ("codigo") String codigo)
    {
        ControladorGenerico con = new ControladorGenerico();
        if (!con.buscarTodos(Usuario.class).isEmpty())
            if (!new SesionJpaController().checkCodigoSesion(codigo))
                return false;
        
        UsuarioJpaController conUsuarios = new UsuarioJpaController();
        
        Usuario res = conUsuarios.buscarUsuario(usuario.getUsuario());
        
        if (res != null)
            return false;
        
        return conUsuarios.create(usuario);
    }
    
    @POST
    @Path ("edit")
    @Consumes(MediaType.APPLICATION_JSON)
    public boolean edit (Usuario usuario, @HeaderParam("codigo") String codigo)
    {
        if (!new SesionJpaController().checkCodigoSesion(codigo))
            return false;
        
        UsuarioJpaController con = new UsuarioJpaController();
        return con.edit(usuario);
    }
}
